<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>日期时间选择器</title>
    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2431045_hbwl3x53oep.css">
    <link rel="stylesheet" href="./index.css">
</head>
<style>
    .wrap{
        line-height: 40px;
        height: 40px;
        border: 1px solid #dcdfe6;
        width: 400px;
        margin: 40px auto 0;
        display: flex;
        transition: border-color .2s;
        border-radius: 4px;
    }
    .wrap:hover{
        border-color: #c0c4cc;
    }
    .wrap:active{
        border-color: #66b1ff;
    }
    .wrap.active{
        border-color: #66b1ff;
    }
    .wrap > div{
        flex: 1;
        padding: 0 10px;
        display: flex;
        cursor: pointer;
    }
    .wrap .ali-iconfont{
        display: inline-block;
        width: 20px;
        text-align: center;
        margin-right: 5px;
    }
    .wrap-l-starTime, .wrap-l-endTime{
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .wrap [name="startTime"], .wrap [name="endTime"]{
        flex: 1;
        width: 100%;
    }
    .wrap [name="startTime"], .wrap [name="endTime"], .wrap [name="startTime"]:focus, .wrap [name="endTime"]:focus{
        border: none;
        outline: none;
        cursor: pointer;
    }

</style>

<body>
    
    <div class="wrap">
        <div class="wrap-l">
            <i class="ali-iconfont ali-iconshizhong"></i>
            <div class="wrap-l-starTime">
                <input name="startTime" type="text" placeholder="开始日期">
            </div>
            
        </div>
        <div class="wrap-r">
            <i class="ali-iconfont ali-iconshizhong"></i>
            <div class="wrap-l-endTime">
                <input name="endTime" type="text" placeholder="结束日期">
            </div>
        </div>
    </div>
</body>
<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script src="./moment.js"></script>
<script src="datePicker.min.js"></script>
<script>

    var fastTime = {
        true: {
            4: { // 双日历天、小时的快速选择格式
                '最近7天': { startTime: moment().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                '最近一个月': { startTime: moment().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                '最近三个月': { startTime: moment().subtract(3, 'month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') }
            },
            5: { // 双日历天、小时的快速选择格式
                '最近7天': { startTime: moment().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                '最近一个月': { startTime: moment().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                '最近三个月': { startTime: moment().subtract(3, 'month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss') }
            },
            6: { // 双日历周的快速选择格式
                '本周': { startTime: moment().startOf('week').subtract(0, 'week').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('week').format('YYYY-MM-DD HH:mm:ss') },
                '最近2周': { startTime: moment().startOf('week').subtract(2, 'week').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('week').format('YYYY-MM-DD HH:mm:ss') },
                '最近4周': { startTime: moment().startOf('week').subtract(4, 'week').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('week').format('YYYY-MM-DD HH:mm:ss') },
                '最近8周': { startTime: moment().startOf('week').subtract(8, 'week').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('week').format('YYYY-MM-DD HH:mm:ss') },
            },
            7: { // 双日历月的快速选择格式
                "本月": { startTime: moment().startOf('month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')},
                "本年": { startTime: moment().startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')},
                "最近六个月": { startTime: moment().startOf('month').subtract(6, 'month').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')}
            },
            8:{ // 双日历季的快速选择格式
                "本季度": { startTime: moment().startOf('quarter').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('quarter').format('YYYY-MM-DD HH:mm:ss')},
                "今年至今": { startTime: moment().startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('quarter').format('YYYY-MM-DD HH:mm:ss')},
                "上一季度": { startTime: moment().subtract(1, 'quarter').startOf('quarter').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().subtract(1, 'quarter').endOf('quarter').format('YYYY-MM-DD HH:mm:ss')}
            },
            9: { // 双日历年的快速选择格式
                "今年": { startTime: moment().startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')},
                "近一年": { startTime: moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')},
                "近二年": { startTime: moment().subtract(2, 'year').startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')},
                "近十一年": { startTime: moment().subtract(11, 'year').startOf('year').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')}
            }
        },
        false: {
                4: {  // 单日历天和小时的快速时间选择格式
                    '今天': { startTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                    '昨天': { startTime: moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss') },
                    '一周前': { startTime: moment().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss') },
                },
                5: {  // 单日历天和小时的快速时间选择格式
                    '今天': { startTime: moment().format('YYYY-MM-DD HH:mm:ss') },
                    '昨天': { startTime: moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss') },
                    '一周前': { startTime: moment().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss') },
                },
                6: { // 单日历周的快速选择格式
                    '本周': { startTime: moment().startOf('week').subtract(0, 'week').format('YYYY-MM-DD HH:mm:ss')},
                    '上一周': { startTime: moment().startOf('week').subtract(1, 'week').format('YYYY-MM-DD HH:mm:ss')},
                    '上二周': { startTime: moment().startOf('week').subtract(2, 'week').format('YYYY-MM-DD HH:mm:ss')},
                },
                7: {  // 单选日历月的快速时间选择格式
                    '当前月': { startTime: moment().startOf('month').format('YYYY-MM-DD HH:mm:ss') },
                    '一个月前': { startTime: moment().startOf('month').subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss') },
                    '半年前': { startTime: moment().startOf('month').subtract(6, 'month').format('YYYY-MM-DD HH:mm:ss') },
                    '一年前': { startTime: moment().startOf('month').subtract(12, 'month').format('YYYY-MM-DD HH:mm:ss') },
                },
                8: {  // 单选日历季的快速时间选择格式
                    '本季度': { startTime: moment().startOf('quarter').format('YYYY-MM-DD HH:mm:ss') },
                    '上一季度': { startTime: moment().startOf('quarter').subtract(1, 'quarter').format('YYYY-MM-DD HH:mm:ss') },
                    '上二季度': { startTime: moment().startOf('quarter').subtract(2, 'quarter').format('YYYY-MM-DD HH:mm:ss') },
                },
                9: {  // 单选日历年的快速时间选择格式
                    '今年': { startTime: moment().startOf('year').format('YYYY-MM-DD HH:mm:ss') },
                    '去年': { startTime: moment().startOf('year').subtract(1, 'year').format('YYYY-MM-DD HH:mm:ss') },
                    '前年': { startTime: moment().startOf('year').subtract(2, 'year').format('YYYY-MM-DD HH:mm:ss') },
                },
        }

    }

    $('.wrap').on('click', function () {
        var _this = this;
        var reportTimeType = 4;
        var double = true;
        if(!$(this).next('[name="datePicker"]').length) {
            $(this).after("<div class='datePicker-x' name='datePicker'></div>");
                datePicker = $('.datePicker-x').datePicker({
                    reportTimeType: reportTimeType, // 4代表小时、5代表天、6代表周、7代表月、8代表季、9代表年
                    startDom: $(_this).find('input[name="startTime"]'),  // 开始时间要赋值的DOM元素
                    endDom: $(_this).find('input[name="endTime"]'),  // 结束时间要赋值的DOM元素
                    format: 'YYYY-MM-DD HH:mm:ss',
                    fastTime: fastTime[double][reportTimeType], // 快速选择的时间
                    isFast: true,   // 是否显示快速选择的选项
                    isDouble: double,   // 是否双选择的日历
                    disabledDate: false,    // 是否禁用以后的时间
                    yes: function (startTime, endTime) {    // 成功赋值前的回调可改变赋值的时间格式
                    },
                });
        }else {
            if($(this).next('[name="datePicker"]').hasClass('hide')) {
                $(this).next('[name="datePicker"]').removeClass('hide');
                datePicker.render();
            }else {
                $(this).next('[name="datePicker"]').addClass('hide');

            }
        }

        

    });



</script>

</html>